Jeśli moja strona Ci pomogła, i chcesz aby była bardziej rozwijana, wesprzyj mnie
buy me a coffee
|
Wstrzykiwnie zależności odbywa się przez adnotację:
@Inject, należy zaimportować adnotację javax.inject.Inject
Wstrzykiwać możemy w 3 miejscach:
- Pole:
@ConversationScoped
public class FieldInjection {
@Inject
private Bank bank;
}
- Konstruktor:
@ConversationScoped
public class ConstructorInjection {
private Bank bank;
@Inject
public ConstructorInjection(Bank bank) {
this.bank = bank;
}
}
- metoda:
@ConversationScoped
public class MethodInjection {
@Inject
return bank.getMoney(100);
}
}
Możliwe jest wstrzyknięcie bez użycia adnotacji @Inject:
- adnotacja @Produces - wstrzykiwanie odbywa się automatycznie
@ConversationScoped
public class ProducerInjection {
@Produces
public EntityManager getMoney(EntityManagerFactory emf) {
return emf.createEntityManager();
}
}
- adnotacja @Observes - wstrzykiwanie odbywa się automatycznie
@ConversationScoped
public class ObserverInjection {
public void onEvent(@Observes MyEvent event, Client textService) {
return textService.send(event.getEventMessage());
}
}
- zdarzenie wywołuje się przez CDI.current().getBeanManager().fireEvent(new MyEvent("Witaj!")
a Client textService jest wstrzyknięty.
|